Questions

  1. Does the “sup_fol” analyses consider “folate supplement use” (yes/no)?
  • folate_sup_yn = binary supplemental folate variable


  1. Contrasts - what is the contrast for all analysis
  • folate_dietqc2/folate_totqc2 - per quartile effect, Q1 as baseline
  • folate_xxx_400qcm_gwis (continuous variables) - scaled as per IQR increase, median intake as baseline

Main effects

Additional folate meta-analyses

  • Adjusted by BMI and smoking status (never/ever). Analyses adjusted for smoking exclude ATBC (Tobacco trial)
  • Stratified by regular alcohol use (never/ever). Ever includes both low (1-28g/day) and high (> 28g/day) levels)

folate_dietqc2

# input variables
exposure = 'folate_dietqc2'

# input data
esubset <- readRDS(glue("/media/work/gwis_test/{exposure}/data/FIGI_{hrc_version}_gxeset_{exposure}_basic_covars_glm.rds")) %>% 
  pull(vcfid)
input_data <- readRDS(glue("/media/work/gwis/data/FIGI_EpiData/FIGI_{hrc_version}_gxeset_analysis_data_glm.rds")) %>% 
  filter(vcfid %in% esubset)
if(exposure == "folate_diet400qcm") {
  categorical = F
} else {
  categorical = T
}
Basic covariates
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))
create_forest_plot_rmarkdown(data_epi = input_data,
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

folate_diet400qcm

# input variables
exposure = 'folate_diet400qcm'

# input data
# rescale the continuous variable to model per IQR increase, median as baseline
esubset <- readRDS(glue("/media/work/gwis_test/{exposure}/data/FIGI_{hrc_version}_gxeset_{exposure}_basic_covars_glm.rds")) %>%
  pull(vcfid)
input_data <- readRDS(glue("/media/work/gwis/data/FIGI_EpiData/FIGI_{hrc_version}_gxeset_analysis_data_glm.rds")) %>%
  filter(vcfid %in% esubset) %>%
  mutate(folate_diet400qcm = as.numeric(folate_diet400qcm))

folate_diet400qcm.iqr.median = median(input_data$folate_diet400qcm)
input_data <- input_data %>%
  mutate(folate_diet400qcm = folate_diet400qcm / folate_diet400qcm.iqr.median,
         folate_diet400qcm = (folate_diet400qcm - median(folate_diet400qcm)) / IQR(folate_diet400qcm))
if(exposure == "folate_diet400qcm") {
  categorical = F
} else {
  categorical = T
}
Basic covariates
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))
create_forest_plot_rmarkdown(data_epi = input_data,
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

folate_totqc2

# input variables
exposure = 'folate_totqc2'

# input data
esubset <- readRDS(glue("/media/work/gwis_test/{exposure}/data/FIGI_{hrc_version}_gxeset_{exposure}_basic_covars_glm.rds")) %>%
  pull(vcfid)
input_data <- readRDS(glue("/media/work/gwis/data/FIGI_EpiData/FIGI_{hrc_version}_gxeset_analysis_data_glm.rds")) %>%
  filter(vcfid %in% esubset)
if(exposure == "folate_diet400qcm") {
  categorical = F
} else {
  categorical = T
}
Basic covariates
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))
create_forest_plot_rmarkdown(data_epi = input_data,
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

folate_sup_yn

# input variables
exposure = 'folate_sup_yn'

# input data
esubset <- readRDS(glue("/media/work/gwis_test/{exposure}/data/FIGI_{hrc_version}_gxeset_{exposure}_basic_covars_glm.rds")) %>%
  pull(vcfid)
input_data <- readRDS(glue("/media/work/gwis/data/FIGI_EpiData/FIGI_{hrc_version}_gxeset_analysis_data_glm.rds")) %>%
  filter(vcfid %in% esubset)
if(exposure == "folate_diet400qcm") {
  categorical = F
} else {
  categorical = T
}
Basic covariates
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))
create_forest_plot_rmarkdown(data_epi = input_data,
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes"),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Non drinkers
# input variables
covariates <- sort(c('age_ref_imp', 'sex', 'energytot_imp', 'bmi', 'smk_ever'))

# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "No",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

Basic covariates + bmi + smk_ever - Drinkers
# create forest plot
create_forest_plot_rmarkdown(data_epi = input_data %>% filter(alcohol_ref == "Yes",
                                                              across(c(bmi,smk_ever), ~ !is.na(.)),
                                                              !study_gxe %in% c("ATBC")),
                             exposure = exposure,
                             covariates = covariates,
                             hrc_version = hrc_version,
                             strata = 'all',
                             categorical = categorical)

GxE posthoc

“For supplemental folate use (folate_sup_yn, yes/no), is it possible to perform some follow up analysis for chr3_12041456_T_A (1df) chr6_23445253_T_A (case-only) findings?”
- eQTL for gene expression databases other than GTEx (e.g., BarcUVA, eQTLGen)
- stratified GxE results by regular alcohol at reference period
- stratified GxE by tumor molecular subtype

eQTL

BarcUVA (in progress)

eQTLGen

chr3_12041456_T_A
eqtlgen <- read.csv("folate_sup_yn_chr3_12041456_eqtlgen.csv")
datatable(eqtlgen, list(pageLength=50, scrollX='400px'))
chr6_23445253_T_A

(no findings)

GxE stratified by alcohol use

chr3_12041456_T_A

out <- create_stratified_gxe_rmarkdown(data_epi = input_data,
                                       exposure = exposure,
                                       snp = '3:12041456:T:A', # ugh
                                       covariates = covariates,
                                       strata = "alcohol_ref",
                                       method = "chiSqGxE",
                                       flip_allele = F)
cat(unlist(out), sep = '\n')
alcohol_ref stratified chr3_12041456_T_A_dose x folate_sup_yn
Dependent variable:
outcome
All (Ca=22989,Co=34307) Yes (Ca=10892,Co=12995) No (Ca=11633,Co=20724)
(1) (2) (3)
chr3_12041456_T_A_dose 0.745*** (0.595, 0.895) 0.702** (0.472, 0.932) 0.800* (0.599, 1.001)
folate_sup_ynYes 0.788*** (0.752, 0.825) 0.738*** (0.683, 0.793) 0.866*** (0.815, 0.917)
age_ref_imp 1.005*** (1.003, 1.007) 1.003* (1.001, 1.006) 1.003* (1.001, 1.006)
bmi 1.019*** (1.015, 1.022) 1.015*** (1.010, 1.020) 1.018*** (1.013, 1.023)
energytot_imp 1.000*** (1.000, 1.000) 1.000*** (1.000, 1.000) 1.000*** (1.000, 1.000)
sex 0.875*** (0.840, 0.911) 0.913** (0.858, 0.969) 0.947* (0.898, 0.996)
smk_everYes 1.121*** (1.086, 1.156) 1.049 (0.996, 1.102) 1.248*** (1.200, 1.296)
chr3_12041456_T_A_dose:folate_sup_ynYes 1.884*** (1.656, 2.112) 1.845*** (1.493, 2.197) 1.822*** (1.521, 2.124)
Constant 0.172*** (0.016, 0.328) 0.287*** (0.058, 0.517) 0.154*** (-0.072, 0.381)
Observations 57,296 23,887 32,357
Note: p<0.05; p<0.01; p<0.001
(PC and Study estimates omitted from table)
GxE term LRtest p = 4.7264e-08
GxE term LRtest p = 6.4028e-04
GxE term LRtest p = 9.0444e-05

chr6_23445253_T_A

out <- create_stratified_gxe_rmarkdown(data_epi = input_data,
                                       exposure = exposure,
                                       snp = '6:23445253:T:A', # ugh
                                       covariates = covariates,
                                       strata = "alcohol_ref",
                                       method = "chiSqCase",
                                       flip_allele = F)
cat(unlist(out), sep = '\n')
alcohol_ref stratified chr6_23445253_T_A_dose x folate_sup_yn
Dependent variable:
outcome
All (Ca=22989,Co=34307) Yes (Ca=10892,Co=12995) No (Ca=11633,Co=20724)
(1) (2) (3)
chr6_23445253_T_A_dose 1.052** (1.020, 1.083) 1.051* (1.004, 1.097) 1.043 (1.000, 1.086)
folate_sup_ynYes 0.875*** (0.819, 0.932) 0.796*** (0.710, 0.883) 0.969 (0.892, 1.046)
age_ref_imp 1.005*** (1.003, 1.007) 1.003* (1.001, 1.006) 1.003* (1.001, 1.006)
bmi 1.019*** (1.015, 1.022) 1.015*** (1.010, 1.020) 1.018*** (1.013, 1.023)
energytot_imp 1.000*** (1.000, 1.000) 1.000*** (1.000, 1.000) 1.000*** (1.000, 1.000)
sex 0.875*** (0.840, 0.910) 0.913** (0.857, 0.969) 0.946* (0.898, 0.995)
smk_everYes 1.122*** (1.087, 1.157) 1.050 (0.996, 1.103) 1.250*** (1.201, 1.298)
chr6_23445253_T_A_dose:folate_sup_ynYes 0.904*** (0.853, 0.954) 0.934 (0.857, 1.010) 0.894** (0.825, 0.962)
Constant 0.163*** (0.005, 0.322) 0.273*** (0.040, 0.507) 0.148*** (-0.081, 0.377)
Observations 57,296 23,887 32,357
Note: p<0.05; p<0.01; p<0.001
(PC and Study estimates omitted from table)
GxE term LRtest p = 8.2436e-05
GxE term LRtest p = 7.7692e-02
GxE term LRtest p = 1.2655e-03

GxE stratified by molecular subtype

tumor_marker <- read.csv("Results_folate_sup_yn-20211118.csv")
datatable(tumor_marker, list(pageLength=50, scrollX='400px'))